﻿<!DOCTYPE HTML>
<html lang="zh">
<head>
<title>#导入 / #再次导入 - 语法 &amp; 使用 | AutoHotkey v2</title>
<meta name="description" content="The #导入 and #再次导入 directives cause the script to behave as though the specified file's contents are present at this exact position." />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link href="../static/theme.css" rel="stylesheet" type="text/css" />
<script src="../static/content.js" type="text/javascript"></script>
<script type="text/javascript">$(function(){0<=window.navigator.userAgent.toLowerCase().indexOf("ucbrowser")&&CaoNiMaDeUc()})</script>
</head>
<body>

<h1>#[再次]导入</h1>

<p>使脚本的行为与指定文件的内容位于此确切位置一样.</p>

<pre class="Syntax"><span class="func">#导入</span> FileOrDirName
<span class="func">#导入</span> &lt;LibName&gt;
<span class="func">#再次导入</span> FileOrDirName</pre>
<h2 id="Parameters">参数</h2>
<dl>

  <dt>FileOrDirName</dt>
  <dd>
    <p>类型: <a href="../Concepts.htm#strings">字符串</a></p>
    <p>文件或目录的路径, 如下所述. <strong>不能</strong> 包含双引号, 通配符或<a href="../misc/EscapeChar.htm">转义序列</a>(分号 <strong>`;</strong> 除外).</p>
    <p>内置变量以通过将其括在百分号中来使用(例如, <code>#导入 "%内_脚本目录%"</code>). 不属于有效变量引用的百分号按原义解释. 所有内置变量都是有效的, 除了 <a href="../Variables.htm#Args">A_Args</a> 和内置类.</p>
    <p>已知限制: 编译脚本时, 变量由编译器计算, 并且可能与脚本最终执行时返回的值不同. 编译器支持以下变量: <a href="../Variables.htm#AhkPath">内_主程序路径</a>, <a href="../Variables.htm#AppData">内_应用数据</a>, <a href="../Variables.htm#AppDataCommon">内_常规应用数据</a>, <a href="../Variables.htm#ComputerName">内_剪贴板</a>, <a href="../Variables.htm#ComSpec">内_命令行</a>, <a href="../Variables.htm#Desktop">内_桌面</a>, <a href="../Variables.htm#DesktopCommon">内_常规桌面</a>, <a href="../Variables.htm#IsCompiled">内_是否已编译</a>, <a href="../Variables.htm#LineFile">内_此文件路径</a>, <a href="../Variables.htm#MyDocuments">内_我的文档</a>, <a href="../Variables.htm#ProgramFiles">内_程序文件</a>, <a href="../Variables.htm#Programs">内_程序</a>, <a href="../Variables.htm#ProgramsCommon">内_常规程序</a>, <a href="../Variables.htm#ScriptDir">内_脚本目录</a>, <a href="../Variables.htm#ScriptFullPath">内_脚本全路径</a>, <a href="../Variables.htm#ScriptName">内_脚本名</a>, <a href="../Variables.htm#Space">内_空格</a>, <a href="../Variables.htm#StartMenu">内_开始菜单</a>, <a href="../Variables.htm#StartMenuCommon">内_常规开始菜单</a>, <a href="../Variables.htm#Startup">内_启动</a>, <a href="../Variables.htm#StartupCommon">内_常规启动</a>, <a href="../Variables.htm#Tab">内_跳格</a>, <a href="../Variables.htm#Temp">内_临时路径</a>, <a href="../Variables.htm#UserName">内_用户名</a>, <a href="../Variables.htm#WinDir">内_系统目录</a>.</p>
    <p><strong>File:</strong> 要包含的文件的名称, 如果未指定绝对路径, 则假定在启动/工作目录(除了 <a href="../Scripts.htm#ahk2exe">Ahk2Exe</a>, 它假定文件是在脚本自己的目录下的). 注意: <a href="SetWorkingDir.htm">设置工作目录</a> 对 #导入 没有效果, 因为 #导入 是在脚本开始执行之前处理的.</p>
    <p><strong>Directory:</strong> 指定目录而不是文件, 以更改当前文件中所有后续出现的 #导入 和 <a href="FileInstall.htm">文件安装</a> 所使用的工作目录. 注意: 以这种方式更改工作目录不会影响脚本开始运行时的初始工作目录(<a href="../Variables.htm#WorkingDir">内_工作目录</a>). 要改变这一点, 请在脚本的顶部使用 <a href="SetWorkingDir.htm">设置工作目录</a>.</p>
    <p class="note"><strong>注意:</strong> 这个参数不是一个表达式, 但可以用引号括起来(可以是 '单引号' 或 "双引号").</p>
  </dd>

  <dt>LibName</dt>
  <dd>
    <p>类型: <a href="../Concepts.htm#strings">字符串</a></p>
    <p>库文件或函数的名称. 例如, <code>#导入 &lt;lib&gt;</code> 和 <code>#导入 &lt;lib_func&gt;</code> 都会包含某个<a href="../Functions.htm#lib">函数库文件夹</a>中的 lib.ahk. <em>LibName</em> 不能包含变量引用.</p>
  </dd>

</dl>
<h2 id="Remarks">备注</h2>
<p>脚本表现得好像包含文件的内容实际出现在 #导入 指令的准确位置(就好像从包含的文件中复制粘贴过来一样). 因此, 它通常不能把两个孤立的脚本合并成一个可运行的脚本.</p>
<p>#导入 仅确保包含 <em>FileName</em> 一次, 即使遇到多次重复的包含也是如此. 与之相比, #再次导入 允许同一文件的多次包含, 而在所有其他方面与 #导入 相同.</p>
<p>可以在 <em>FileName</em> 参数前加上 <code>*i</code> 和单个空格, 这会使程序忽略读取包含文件的任何失败. 例如: <code>#导入 "*i SpecialOptions.ahk"</code>. 此选项应该仅在包含的文件的内容对主脚本的操作可有可无的情况下才使用.</p>
<p>通过 <a href="ListLines.htm">记录列表</a> 或菜单 View-&gt;Lines 在主窗口显示的行总是按照它们在自己的文件中的物理顺序进行编号的. 换句话说, 包含一个新文件将只改变主脚本文件那一行的编号, 即 #导入 行本身的行号(<a href="../Scripts.htm#ahk2exe">编译后的脚本</a>除外, 它会在编译时把它们包含的文件合并成一个大的脚本).</p>
<p>#导入 常用来加载在外部文件中定义的<a href="../Functions.htm">函数</a>.</p>
<p>与其他 # 指令类似, 不能根据条件执行 #导入. 换句话说, 这个例子不起作用:</p>
<pre>如果 (x = 1)
    #导入 "SomeFile.ahk"  <em>; 不管 x 的值是什么此行都会执行.</em>
    y := 2  <em>; 而此行属于上面的 如果, 因为 # 指令不属于 如果.</em></pre>
<p>通过名称来调用<a href="../Functions.htm#lib">库函数</a>, 可以自动包含文件(即不需要使用 #导入).</p>

<h2 id="Related">相关</h2>
<p><a href="../Functions.htm#lib">函数库</a>, <a href="../Functions.htm">函数</a>, <a href="FileInstall.htm">文件安装</a></p>
<h2 id="Examples">示例</h2>
<div class="ex" id="ExBasic">
<p><a href="#ExBasic">#1</a></p>
<pre>#导入 "C:\My Documents\Scripts\Utility Subroutines.ahk"
#导入 "%内_脚本目录%"  <em>; 为后续的 #导入 和 文件安装 改变工作目录.</em>
#导入 "C:\My Scripts"  <em>; 和上面相同, 不过这里指定明确的命名目录.</em></pre>
</div>

</body>
</html>